package independent;

import java.util.Arrays;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: fzykd
 * Date: 2022-11-14
 * Time: 13:46
 */

//冒泡排序
public class BubbleSort {
    //基本思想: 相邻的两个元素逆序就交换
    public static void main(String[] args) {
        int[] arr = {23,5,16,43,9};

        //做一个优化 如果在比较的过程中 没有发生交换了 那么本次循环就有序了 设置一个标志位来判断
        boolean flag = false;

        int tmp = 0;
        //有n个数 那么循环n-1轮 最好一个数 在最好一轮已经是确定了为止了
        for (int i = 0; i < arr.length-1; i++) {
            //每次也是从最开始比较 然后没一轮之后 都有序了一个数 就要-i
            for (int j = 0; j < arr.length-1-i; j++) {
                //做判断 如果逆序了那么就交换
                if (arr[j] > arr[j+1]){
                    //每次交换之后 设为true
                    flag = true;
                    tmp = arr[j+1];
                    arr[j+1] = arr[j];
                    arr[j] = tmp;
                }
            }
            //前提是把本轮的比较走完
            if (!flag){
                break;
            }else {
                //重新将flag设为false
                flag = false;
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}
